1. Technical Field
The present invention relates to a device controller and an input/output system for processing an input/output request for a physical device such as a disk array from various hosts such as a main frame or a open system host, and more particularly to a device controller and an input/output system for optimizing cuing for an increase in the input/output request, the correspondence of a sequential access attended with path switching, switching to a standby system during the generation of faults, and furthermore, maintenance of a transfer rate for a channel fault, respectively.
2. Background Art
Currently, a device controller for controlling an input/output processing for a device such as a disk array has been improved in function, performance and reliability. Importance has been attached to the fact that the device controller can be connected to a host system in various fields such as a UNIX or a personal computer in addition to a conventional large-sized computer. However, there have been some problems to be solved in order to connect the device controller to various hosts. Referring to a first problem, an input/output request (I/O command) is issued to the device controller simultaneously from various hosts so that a load concentrates on a queue management resource for storing and managing the input/output request from the hosts, thereby giving a bottleneck. The device controller comprises a channel adapter for each port for physically connecting a plurality of hosts, a resource manager for collectively processing the input/output requests sent from the hosts, and a device adapter for controlling each physical device. The contents of the input/output requests sent from the hosts are analyzed by the channel adapter and the requests are exactly transferred to the resource manager. The resource manager stores the input/output request sent from the channel adapter in a cue table (queue) provided on a cue control section in the resource manager and sequentially issues the input/output request to the device adapter to be an object. The device adapter issues the input/output request to the device and returns a response to the resource manager. The resource manager carries out the exclusive management of an input/output during an operation in the device controller, the cue management of the input/output request for the device, and array control if the device controller is an array disk. Thus, the contents of the input/output requests sent from the hosts are analyzed by the channel adapter and the requests are exactly transferred to the resource manager. In such circumstances that the number of hosts simultaneously issuing a plurality of input/output requests is increased, the input/output requests of the hosts are accumulated in a cue control section in the resource manager, and the overhead of the cue control to be carried out by the resource manager becomes a bottleneck in the device controller.
Moreover, in the case in which the device controller according to the present invention is connected to open system hosts as various hosts, it is desirable that an input/output request sent from a host application should be divided into a plurality of paths through a processing distribution driver to take a load balance and to build such an environment that a specific path does not become a bottleneck. The input/output request sent from the host application of the open system host is distributed into each of the device drivers of the paths through the processing distribution driver, and furthermore, the input/output request sent from each host adapter is issued to the device controller. Thus, the paths are built by a load distribution driver, thereby reducing the bottleneck of the paths connected to the host and the device controller. However, there is one problem. More specifically, the input/output requests are distributed so that sequential recognition which has conventionally been operated in the device controller cannot be carried out. A conventional sequential input/output request is decided to be a sequential input/output request when the address of the input/output request is ensured and is found to have the continuity of an address by a comparison with a last command. When the device controller decides the sequential input/output request, it is possible to implement an operation mode effective for the sequential input/output request for a prefetch operation, plural area simultaneous read and write or the like. However, the input/output request takes the load balance by the processing distribution driver. Therefore, when the input/output requests are issued separately through the paths, a mechanism for detecting the sequential input/output request is not operated.
In the case in which the device controller is connected to the open system host to build the input/output system, the path is divided redundantly into an operation system path and a standby system path in order to enhance the reliability of the system. For example, a host application input/output request provided in the open system host is issued to the device driver of the operation system path by a path switching driver and is transferred to the host adapter of the device controller. In the case in which a fault is generated on a path connected to the device driver of the operation system, the use of the operation system path on which the fault is generated is stopped by the path switching driver and the issuance of the input/output request is transferred to the device driver set to the standby system. However, path connected to the standby system device driver breaks down while it has not been used for a long period of time. When the operation system breaks down so that the processing is transferred to the standby system, such a fault that the standby system is not operated might be generated.
In the case in which the input/output request sent from the host application of the open system host is divided redundantly into the operation system path and the standby system path and is issued to the device controller, a countermeasure against a release processing of a reserve linked to the device controller is not clear if a fault is generated on the operation system path and the standby system path is started to be utilized when the operation system path is used to maintain a specific device in a reserve state. More specifically, the input/output request sent from the host application provided in the open system host is issued to the device driver of the operation system by the path switching driver. When a fault is generated on the operation system path connected to the device driver, the path switching driver stops the use of the path of the operation system and the issuance of the input/output request is started in the device driver set through the standby system path. At this time, however, in the case in which the host application reserves a specific device through the device driver of the operation system, a processing reservation conflict is to be responded to the path provided under the standby system device driver which acts as another path so that redundancy of the path is blocked because the device controller controls the reserve for each path.
In the open system host, the input/output request sent from the host application is distributed into a plurality of paths through the processing distribution driver, thereby taking a load balance. Moreover, in the case in which one path of the device driver breaks down, residual paths can be used to distribute the input/output request sent from the host application through the processing distribution driver, thereby taking a load balance. However, a host system causing a fault on a path decreases the number of paths to be an object of processing distribution due to the fault as compared with other normal host systems. Referring to the whole system, therefore, there is a problem in that an input/output processing becomes a path bottleneck so that performance is deteriorated. In the input/output system for processing an input/output request sent from a host to a physical device through the device controller, furthermore, there is a problem in that a lower transfer rate is applied if a difference is made between the transfer rate of a host adapter on the host side and the transfer rate of a channel adapter on the device controller side.
The present invention provides a device controller in which a cue control section is provided in a channel adapter, requests sent from a host are once stored in the channel adapter, and some of them are transferred to a resource manager, thereby decreasing the number of cues to be controlled by the resource manager.
The present invention provides a device controller capable of recognizing that sequential input/output requests are sequential on the device controller side or not even if they are issued from a host application separately in order to take a load balance.
The present invention provides an input/output system which is reliably operated when a processing is changed from an operation system path to a standby system path.
The present invention provides an input/output system in which even if a processing distribution path breaks down, a load balance equivalent to that before the generation of a fault can be implemented, thereby preventing a deterioration in performance.
The present invention provides an input/output system capable of rebuilding a reserve state even if a conversion to another path is carried out in such a state that the reserve of a device is established.
The present invention provides an input/output system capable of maintaining a higher transfer rate even if a difference is made on channel transfer rates between a host and a device controller.
Distribution Cue Control
The present invention provides a device controller having a plurality of various hosts connected thereto and serving to process an input/output request from the hosts to a device, comprising a plurality of channel adapters for accepting the input/output request sent from the hosts, a plurality of device adapters for issuing the input/output request to the device, and a resource manager for carrying out whole input/output control from the hosts between the channel adapters and the device adapters. Referring to such a device controller, the present invention is characterized by a first cue table provided in each of the channel adapters and serving to store a plurality of input/output requests from the hosts, a first cue control section provided in each of the channel adapters and serving to issue, to the resource manager, the input/output requests sent from the hosts which are stored in the first cue table, a second cue table provided in the resource manager and serving to store the input/output requests sent from the hosts which are issued from the channel adapters, and a second cue control section provided in the resource manager and serving to issue, to the device adapter, the input/output requests sent from the hosts which are stored in the second cue table. Consequently, even if a plurality of input/output requests are received from the hosts at the same time, they are once stored in the channel adapter and some of them are transferred to the resource manager. Therefore, it is possible to substantially reduce the number of inputs and outputs handled by the cue control of the resource manager and to prevent the overhead of the cue control to be carried out by the resource manager from being a bottleneck in the device controller. Consequently, processing performance can be enhanced.
The first cue control section of each of the channel adapters fetches one or more input/output requests in a unit from the input/output requests sent from the hosts which are stored in the first cue table and gives a request for a processing to the resource manager. Moreover, the first cue control section of each of the channel adapters fetches the input/output requests sent from the hosts which are stored in the first cue table and gives a request for a processing to the resource manager when receiving an end report of the issued input/output requests issued from the resource manager as the timing of the input/output request. Furthermore, the first cue control section of each of the channel adapters may obtain an inquiry whether or not an input/output request can be accepted to the resource manager at a constant time interval and an acceptable response, thereby fetching the input/output requests sent from the hosts which are stored in the first cue table to give a request for a processing to the resource manager.
The second cue control section provided in the resource manager sets a limit to the number of inputs/outputs of the hosts which can be stored in the second cue table, accepts the input/output requests from the channel adapter which is less than the limited number and stores them in the second cue table, and rejects acceptance of the input/output requests sent from the channel adapter which is equal to or more than the limited number and stores them in the first cue table in the channel adapter. In this case, the second cue control section provided in the resource manager may calculate a busy ratio of the second cue table, increases the limited number of the input/output requests which can be cued if the busy ratio is increased, and decreases the limited number of the input/output requests which can be cued if the busy ratio is reduced. The busy ratio is a value obtained by dividing the number of all the input/output requests cued at the present time by the maximum number of the input/output requests which can be cued. Consequently, the number of the input/output requests which can be cued from each channel adapter to the resource manager can be dynamically changed corresponding to the degree of the processing of the input/output requests through the resource manager. Thus, the cuing on the channel adapter side can avoid the full and the overtime of the input/output request sent from the hosts.
In the device controller according to the present invention, moreover, the first cue control section of the channel adapter and the second cue control section of the resource manager control the first cue table of the channel adapter and the second cue table of the resource manager in a section of a physical device.
The present invention further provides a device control method in which a device controller for connecting a plurality of various hosts to a device is provided with a plurality of channel adapters for accepting an input/output request from a host, a plurality of device adapters for issuing an input/output request to the device, and a resource manager for carrying out whole input/output control from the host between the channel adapters and the device adapters, and the input/output requests from the hosts to the physical device are processed, comprising:
a first cue control step of storing the input/output request sent from the host which is accepted in the channel adapters in a first cue table provided in each of the channel adapters and issuing, to the resource manager, the input/output request sent from the host which is stored in the first cue table; and
a second cue control step of storing the input/output request sent from the host which is issued from the channel adapter in a second cue table of the resource manager and issuing, to the device adapter, the input/output request sent from the host which is stored in the second cue table.
Detection of Sequential Input/Output Request
The present invention provides a device controller to be operated in such an environment that an input/output request of an application of a host is distributed to a plurality of device drivers for taking a load balance through a processing distribution driver and an input/output request to which each of the device drivers is allocated is issued, comprising a sequential detecting table for storing an address and a data length of the input/output request received from the host, and a sequential detecting section for predicting a next address if a new input/output request is received and is a sequential input/output request based on an address and a data length of an input/output request registered in the sequential detecting table and for comparing the next address with an address of the new input/output request to recognize presence of sequential. Consequently, even if the sequential input/output requests of the host application are separated by the distribution processing of taking the load balance of the paths through the processing distribution driver and are issued to the device controller, it is possible to recognize the sequential input/output request on the device controller side and to implement an effective operation mode for the sequential input/output requests such as a prefetch operation or plural area simultaneous read and write. The sequential detecting section finds a prediction address obtained by adding a data length to an address of the input/output request registered in the sequential detecting table as a next prediction address if the input/output request is sequential, and recognizes the input/output request to be a sequential input/output request if the prediction address is identical to the address of the new input/output request. Moreover, the sequential detecting section calculates, as a next prediction address of the sequential input/output request, a plurality of prediction addresses having a value obtained by sequentially multiplying a data length by 1 to the number n of channel paths and adding a value thus obtained for an address of an input/output request registered in the sequential detecting table, that is, prediction address=address+data lengthxc3x97(1 to n) when the number of the channel paths with the host is n, and recognizes the sequential input/output request if it is decided that any of the prediction addresses is identical to the address of the new input/output request. Consequently, the following is considered. More specifically, in the case in which the sequential input/output requests are not distributed to specific channel adapters through the processing distribution driver but to other channel adapters, a next input/output request is not always sequential for one channel adapter but an input/output request after the next comes to the same channel adapter, for example.
Moreover, each of the channel adapters for recognizing the sequential input/output is provided with a plurality of sequential detecting tables corresponding to the sequential input/output requests when a plurality of sequential input/output requests are operated in the host application at the same time in an environment of the host, and the sequential detecting section detects a sequential multiple operation by sequentially referring to the sequential detecting tables. In this case, the sequential detecting section stores an address and a data length of a new input/output request in the sequential detecting table used for recognizing the sequential when recognizing a new input/output request to be sequential by referring to any of the sequential detecting tables. Consequently, also in the case in which the sequential input/output requests are operated in a plurality of host applications at the same time, the multiple operation of the sequential input/output requests for the table can be recognized by causing the channel adapters to have the sequential detecting tables corresponding to the sequential input/output requests.
In the device controller according to the present invention, basically, each of the channel adapters for receiving an input/output request issued from each device driver of the host is provided with the sequential detecting table and the sequential detecting section. According to another configuration, in the device controller according to the present invention, a common table for sequential detection for collectively storing a set of an address and data of the input/output request sent from the host is provided in a common area to which the channel adapters can refer, and presence of sequential of a new input/output request is recognized in the sequential detecting section of the channel adapter with reference to the common table for sequential detection. Furthermore, the sequential detecting section obtains a prediction address obtained by adding a data length to an address of an input/output request registered in the sequential detecting table as a next prediction address when an input/output request is sequential, and recognizes the input/output request to be a sequential input/output request if the prediction address is not decided to be identical to an address of a new input/output request but has an approximation. In consideration of the case in which the data length of the sequential data created in the host application is variable, consequently, a new input/output request is recognized to be sequential if the address of the new input/output request is not identical to the prediction address calculated from the address and the data length in the sequential detecting table but has an approximation. For example, if the prediction address is:
prediction address=address 2000+data length 5=2005, 
and the address of the new input/output request has an approximation of:
2000 less than new address less than 2005, 
the new input/output request is recognized to be a sequential input/output request.
Redundancy of Path
The present invention provides an input/output system having redundancy in which a device is connected to a host through a device controller, an input/output request of a host application in the host is usually issued to a device driver of an operation system path through a path switching driver, use of a fault operation system path is stopped through the path switching driver to transfer issuance of an input/output request to a device driver of a standby system path when a fault is generated on the operation system path, wherein a standby system path confirming section for issuing a path confirmation command is provided under the device driver of the standby system path in order to confirm that the standby system path is normally operated or not in the host. During the normal operation in which the input/output request is issued to the operation system path, therefore, it is possible to ascertain whether or not a command is issued to the standby system path and the standby system path is normally operated. Even if a fault is generated in the standby system path, the fault can be confirmed. Therefore, a proper countermeasure such as repair can be taken and the operation of the standby system can be guaranteed when the operation system has a fault and the processing is transferred to the standby system. The standby system path confirming section issues, as the path confirmation command, a command for confirming all path functions including data transfer in a read direction and data transfer in a write direction in the standby system path at a constant time interval. By issuing the command for confirming all the functions of the standby system path, thus, the operation of the standby system can be guaranteed reliably. Moreover, the standby system path confirming section may issue a command for maintaining a state of control information of the device controller as the path confirmation command. As a command for maintaining the state of control information of the device controller, for example, a state notice command is issued and a response of a fault notice command is given from the device controller. By issuing the state notice command for a system error as the path confirmation command, thus, the state notice command originally issued from the operation system path due to a system error can be replaced with the standby system path in addition to the confirmation of the operation of the standby system path. Correspondingly, there is an advantage that the ratio of use of the operation system path can be reduced. Moreover, the standby system path confirming section may issue a part of a normal command to be issued to the operation system path as the path confirmation command to the standby system path. For example, the operation of the standby system path can be confirmed by issuing a command to the standby system path every 100 times. In this case, any command may be issued to the standby system path. By issuing a part of the normal command of the operation system to the standby system for the purpose of path confirmation, thus, there is an advantage that the command to be used for the confirmation of the standby system path does not become an unnecessary overtime of the device controller differently from the case in which a special path confirmation command is issued to the standby system path. Moreover, the standby system path confirming section issues a cross check command for checking that data written to an operation system path can be read through a standby system path or not or data written to the standby system path can be read through the operation system path or not at a constant time interval, thereby confirming system integrity. By carrying out the cross check for checking that data written to the operation system path can be read through the standby system path or not or data written to the standby system path can be read through the operation system path or not at a constant time interval, it is also possible to confirm the integrity of a data sharing system itself in addition to the confirmation of the operation of the standby system path.
Reserve Control and Fault Path Switching
The present invention provides an input/output system for connecting a physical device to a host through a device controller, usually issuing an input/output request of a host application in the host to a device driver of an operation system path through a path switching driver, and stopping use of a fault operation system path through the path switching driver to transfer issuance of an input/output request to a device driver of a standby system path when a fault is generated on the operation system path, wherein cooperation with reserve control is properly carried out. For this purpose, a reserve control section provided in the host issues a command for releasing the reserve to the standby system path if the host application has already reserved a physical device through the operation system path when the issuance of the input/output request to the standby system path is transferred. Corresponding to the reserve control section on the host side, the reserve control section provided in the device controller releases a reserve state of a physical device which has already been maintained through the operation system path when receiving a command for releasing the reserve from the standby system path. Consequently, even if the host application has already reserved the specific physical device by the operation system path when the processing is transferred to the standby system path due to the fault of the operation system path, the reserve state of the physical device through the existing operation system path can be released by the reserve release command sent from the standby system path to be a destination and the reserve state of the specific physical device can be rebuilt newly by the subsequent standby system path. Also in the case in which the processing distribution driver is provided in the host to take the load balance of the paths, the reserve state can be rebuilt even if the processing is similarly transferred to another path in such a state that the reserve state of the device is established. First of all, the present invention provides an input/output system for connecting a physical device to a host through a device controller, distributing a host application input/output request to a plurality of paths in order to take a load balance through a processing distribution driver in the host, stopping use of a fault path through the processing distribution driver to distribute an input/output request to another path when a fault is generated in a specific path, and furthermore, stopping a distribution processing of the processing distribution driver to issue a reserve command to a device driver of another specific path when a reserve command is issued from a high order host application to the processing distribution driver, and then restarting the distribution processing of the processing distribution driver when a reserve release command is issued from the high order host application. Referring to the input/output system according to the present invention, a reserve control section provided in the host issues a command for releasing the reserve from another path if the host application has already reserved the physical device through the fault path when the use of the fault path is stopped and the processing is transferred to another path. Corresponding to the reserve control section, a reserve processing section is provided in the device controller to release the reserve state of the physical device which has already been maintained through the fault path when receiving a command for releasing the reserve from another path.
Countermeasure Against Path Failure of Processing Distribution for Plural Paths
The present invention provides an input/output system for connecting a device to a host through a device controller and distributing an input/output request of a host application in the host to a device driver of an operation system of a plurality of paths through a processing distribution driver, thereby implementing a load balance. Referring to the input/output system according to the present invention, thus, the host connects a device driver of a standby system to the processing distribution driver, and uses the device driver of the standby system to implement a load balance through device drivers of a plurality of paths which is equivalent to that obtained before generation of a fault when the fault is generated in one path of the device driver of the operation system. Moreover, the device controller sets an ID related with a specific physical device to each of channel adapters of a plurality of paths of the operation system and a channel adapter of one path of the standby system and the channel adapter gives an access to a physical device related with the ID from the host in response to an input/output request having the same ID as the set ID. Consequently, in the case in which one path of the device driver of the operation system causes a fault, the device driver of the standby system can be used as a new path in place of the fault path and the same number of paths as that obtained before the generation of the fault can be maintained to implement the same load balance, and a path bottleneck is not generated. Moreover, the present invention is intended for an input/output system comprising a processing distribution driver for connecting a physical device to hosts having at least two systems through a device controller, and distributing an input/output request of a host application provided in each of the hosts to device drivers of an operation system on a plurality of paths to implement a load balance. In this case, the present invention is characterized in that each of the hosts connects a device driver of a standby system to the processing distribution driver and uses the device driver of the standby system to implement a load balance through device drivers on a plurality of paths which is equivalent to that obtained before a fault is generated when the fault is generated in one path of the device driver of the operation system. Moreover, the device controller is provided with channel adapters of a plurality of paths of the operation system for each of the systems of the hosts and with a channel adapter of the standby system for accepting two paths of the standby system of each of the hosts through one path of a sharing standby channel, an ID related with a specific physical device for each system is set to the channel adapter of the operation system, two IDs related with a physical device of each system are set to the channel adapter of the standby system, and the channel adapter gives an access from the host to the physical device related with the ID in response to an input/output request having the same ID as the set ID. In the case in which one path of the device driver of the operation system causes a fault, consequently, each host system uses the path of the device driver of the standby system so that the same number of paths as that obtained before the generation of the fault can be maintained and the same load balance can be implemented. Furthermore, the channel adapter of the standby system of the device controller is shared by one path for two paths of the standby system in each host system. Therefore, there is an advantage that the number of the channel adapters of the standby system can be decreased and the effective utilization of the resource can be implemented.
Optimization of Channel Transfer Rate
The present invention provides an input/output system to be operated in such an environment that one host adapter on a host side is connected to a plurality of channel adapters of a device controller through a fiber channel, wherein when a transfer rate of the channel adapter is lower than a transfer rate of the host adapter, a plurality of operation requests on the host side are distributed to the channel adapters through a processing distribution driver. Consequently, even if the transfer rate of the channel adapter on the device controller side is low, the host adapter on the host side can be maintained to have a high transfer rate. Moreover, the present invention provides an input/output system to be operated in such an environment that a plurality of host adapters on a host side are connected to one channel adapter of a device controller through a fiber channel, wherein when a transfer rate of the host adapter is lower than a transfer rate of the channel adapter, a plurality of operation requests on the host side are distributed to the host adapters through a processing distribution driver, and an access is given to the channel adapter from the host adapters. Consequently, even if the transfer rate of the host adapter on the host side is low, the channel adapter on the device controller side can be maintained to have a high transfer rate. Furthermore, the present invention provides an input/output system to be operated in such an environment that a plurality of host adapters on a host side are connected to one channel adapter of a device controller through a fiber channel, wherein a table for managing any host adapter and any channel adapter which are being used is provided, a distribution processing driver or a device driver sets xe2x80x9cusedxe2x80x9d to a resource of the table during a command processing and sets xe2x80x9cemptyxe2x80x9d when the command processing is ended, and the processing distribution driver retrieves, from the table, a combination of the host adapter and the channel adapter which are empty and uses the combination, thereby issuing a command to give an access to a physical device. By managing the empty situations of the host adapter on the host side and the channel adapter on the device controller side, thus, it is possible to flexibly select a path sent from the host for the device controller and to efficiently utilize the resource, thereby contributing to an enhancement in performance. Moreover, the present invention provides an input/output system to be operated in such an environment that a plurality of host adapters on a host side are connected to one channel adapter of a device controller through a fiber channel, wherein a table for managing any host adapter and any channel adapter which are being used is provided, a distribution processing driver or a device driver sets xe2x80x9cusedxe2x80x9d and the number of cues of a cue table provided for each resource to the resource of the table during a command processing and sets xe2x80x9cemptyxe2x80x9d or the number of cues which is decreased by one when the command processing is ended, and the processing distribution driver retrieves, from the table, a combination of the host adapter and the channel adapter which are empty and uses the combination, thereby issuing a command to give an access to a physical device, and retrieves a combination of the host adapter and the channel adapter which has the smallest number of cues and uses the combination when the table is not empty, thereby issuing a command to give an access to the physical device. By adding the number of cues of the cue table provided for each resource as well as xe2x80x9cused and xe2x80x9cemptyxe2x80x9d of information in the table managed by the distribution processing driver, thus, the distribution processing driver carries out a processing to execute a command for a resource having the smallest number of cues, thereby efficiently utilizing the resource and enhancing the performance.